home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / RCS / readlink.c,v < prev    next >
Text File  |  1991-12-10  |  3KB  |  169 lines

  1. head     1.4;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.4.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.4
  10. date     90.03.23.10.29.33;  author douglis;  state Exp;
  11. branches 1.4.1.1;
  12. next     1.3;
  13.  
  14. 1.3
  15. date     88.11.11.16.56.04;  author brent;  state Exp;
  16. branches ;
  17. next     1.2;
  18.  
  19. 1.2
  20. date     88.06.26.17.30.22;  author mendel;  state Exp;
  21. branches ;
  22. next     1.1;
  23.  
  24. 1.1
  25. date     88.06.19.14.31.52;  author ouster;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29. 1.4.1.1
  30. date     91.12.10.15.57.32;  author kupfer;  state Exp;
  31. branches ;
  32. next     ;
  33.  
  34.  
  35. desc
  36. @@
  37.  
  38.  
  39. 1.4
  40. log
  41. @just added comment about how check for null char can go away once kernel fix
  42. propagates.
  43. @
  44. text
  45. @/* 
  46.  * readlink.c --
  47.  *
  48.  *    Procedure to map from Unix readlink system call to Sprite.
  49.  *
  50.  * Copyright (C) 1986 Regents of the University of California
  51.  * All rights reserved.
  52.  */
  53.  
  54. #ifndef lint
  55. static char rcsid[] = "$Header: /sprite/src/lib/c/unixSyscall/RCS/readlink.c,v 1.3 88/11/11 16:56:04 brent Exp Locker: douglis $ SPRITE (Berkeley)";
  56. #endif not lint
  57.  
  58. #include "sprite.h"
  59. #include "fs.h"
  60. #include "compatInt.h"
  61.  
  62.  
  63. /*
  64.  *----------------------------------------------------------------------
  65.  *
  66.  * readlink --
  67.  *
  68.  *    Procedure to map from Unix readlink system call to Sprite Fs_ReadLink.
  69.  *
  70.  * Results:
  71.  *    UNIX_ERROR is returned upon error, with the actual error code
  72.  *    stored in errno.  Upon success, the number of bytes actually
  73.  *    read (ie. the length of the link's target pathname) is returned.
  74.  *    
  75.  *
  76.  * Side effects:
  77.  *    The buffer is filled with the number of bytes indicated by
  78.  *    the length parameter.  
  79.  *
  80.  *----------------------------------------------------------------------
  81.  */
  82.  
  83. int
  84. readlink(link, buffer, numBytes)
  85.     char *link;            /* name of link file to read */
  86.     char *buffer;        /* pointer to buffer area */
  87.     int numBytes;        /* number of bytes to read */
  88. {
  89.     ReturnStatus status;    /* result returned by Fs_Read */
  90.     int amountRead;        /* place to hold number of bytes read */
  91.  
  92.     status = Fs_ReadLink(link, numBytes, buffer, &amountRead);
  93.     if (status != SUCCESS) {
  94.     errno = Compat_MapCode(status);
  95.     return(UNIX_ERROR);
  96.     } else {
  97.     /*
  98.      * Sprite's Fs_ReadLink includes the terminating null character
  99.      * in the character count return (amountRead) while Unix doesn't.
  100.      *
  101.      * ** NOTE ** this check can go away  once all hosts are running
  102.      * kernels that fix this before returning the value.
  103.      */
  104.     if (buffer[amountRead-1] == '\0') {
  105.         amountRead--;
  106.     }
  107.     
  108.     return(amountRead);
  109.     }
  110. }
  111. @
  112.  
  113.  
  114. 1.4.1.1
  115. log
  116. @Initial branch for Sprite server.
  117. @
  118. text
  119. @d11 1
  120. a11 1
  121. static char rcsid[] = "$Header: /sprite/src/lib/c/unixSyscall/RCS/readlink.c,v 1.4 90/03/23 10:29:33 douglis Exp $ SPRITE (Berkeley)";
  122. @
  123.  
  124.  
  125. 1.3
  126. log
  127. @Fixed this to understand both null-terminated Sprite links
  128. and Unix-style unterminated  symbolic links
  129. @
  130. text
  131. @d11 1
  132. a11 1
  133. static char rcsid[] = "$Header: readlink.c,v 1.2 88/06/26 17:30:22 mendel Exp $ SPRITE (Berkeley)";
  134. d55 4
  135. a58 1
  136.      * in the character count return (amountRead) while Unix doesn't. 
  137. d63 1
  138. @
  139.  
  140.  
  141. 1.2
  142. log
  143. @Corrected readlink to return the length of the link rather than the
  144. length of the link and terminating null character.
  145. @
  146. text
  147. @d11 1
  148. a11 1
  149. static char rcsid[] = "$Header: readlink.c,v 1.1 88/06/19 14:31:52 ouster Exp $ SPRITE (Berkeley)";
  150. d57 4
  151. a60 1
  152.      return(amountRead-1);
  153. @
  154.  
  155.  
  156. 1.1
  157. log
  158. @Initial revision
  159. @
  160. text
  161. @d11 1
  162. a11 1
  163. static char rcsid[] = "$Header: readlink.c,v 1.1 87/04/26 12:41:04 brent Exp $ SPRITE (Berkeley)";
  164. d30 1
  165. d53 5
  166. a57 1
  167.     return(amountRead);
  168. @
  169.